今天我們要來談談兩個概念,Authenication(驗證) 與 Authorization(授權)。
以白話文來說,Authenication 是驗證你的身分,而 Authorization 則是確認該身分可以做甚麼。
| 概念 | Authentication | Authorization |
|---|---|---|
| 中文 | 身分驗證 | 權限授權 |
| 回答問題 | Who are you? | What can you do? |
| 發生時間 | 通常先 | 通常後 |
| 例子 | 帳號密碼、MFA、Face ID | Admin / User / Read-only |
| 常見技術 | OAuth/OIDC、JWT、Session | RBAC、ABAC、ACL |
也因此,假設今天使用者登入了一個 Web 應用程式,便是經由了 Authenication Process 確認資料庫有這位使用者或其 access token valid 而讓其成功登入,但登入之後,使用者可能想進行更進一步的動作時(例如刪除某資源),則需要經由 Authorization process 檢查是否有相應的權限。
所以,簡而言之,Authenication 與 Authorziation 是可以同時存在的。
而在 Authorization 中,常見於 Cloud platform 及資料庫的 RBAC(Role-based Access Control) 及常見於檔案系統的 ACL(Access Control List) 是兩種最知名的模型。
透過 Authorization,我們可以知曉哪些使用者可以存取哪些資源、哪些使用者可以執行哪些動作,給予其該有的權限,並透過存取控制保護系統。